1. Field of the Invention
The present invention relates generally to a method and apparatus for communicating between components in a data processing system. More specifically, the invention relates to a method and apparatus to transport accelerator agent requests to an accelerator agent.
2. Description of the Related Art
A data processing system may be configurable to suit the specific needs of a user. A data processing system is built from components. Components are permanently bonded to a motherboard, plugged into the motherboard, or are entities within a bonded or plugged part. Components herein are logical entities that are connected by some sort of interconnecting signals such as a CPU bus, I/O bus, I/O link, or the like, but are not necessarily bounded by their physical packaging. These logical entities are designed to execute some particular task, or if a task is received that is not to be processed by the component, to pass the request on the next interconnect on its way to a component that can process the request. Examples of a component include a core within a CPU module, an arithmetic unit within the CPU core, or an entity responsible for performing a request from an accelerator component. Components that may be added to an I/O card adapter slot generally use the mechanical and electrical characteristics specified by the peripheral component interconnect (PCI) standard, and its variants, for example, peripheral component interconnect express (PCIe). In a typical data processing system, the operating system queries all PCI buses at startup time to determine which devices are present. A device is in the form of a circuit board or card that engages a slot according to well known electrical and mechanical standards. The operating system may also determine any dependencies of a device on data processing system resources. Such resources may include memory, interrupt lines, etc. Next, the operating system allocates the resources and configures each device to operate with allocated resources. The PCI configuration space of a device or memory internal to the device also contains a device type information. An operating system may select device drivers based on the device type information or at least request additional instructions from a user based on the device type information. Part of the data stored in the PCI configuration space is a human readable text description of the device.
A conventional data processing system may include an input/output (I/O) device coupled to a main processor and a memory via and I/O bus or link, for example as specified by the peripheral component interconnect express (PCIe) specification. Such a data processing system may include an accelerator coupled to the I/O bus. The accelerator may be a special processor adapted to perform one or more specific functions. However, the buses in a data processing system may only be adapted to process read and/or write commands as may be sent by the accelerator. Consequently, the buses and interfacing circuitry of PCI cards are not adapted to direct more complex commands to the component that can perform the desired command. For example, components and accelerators of the prior art may not support read-modify-write commands. Such commands, if available, could be used to synchronize the accelerator and main processor so that the accelerator and main processor may efficiently execute different functions of a program. Accordingly, data processing throughput could be improved with a way to dispatch accelerator requests or commands to accelerator agents.